//  -------------------- iSharePoint -------------------- //
// 
//  Company:	IT Complex, LLC
//  Project:	Smart.Common
//  File name:	IQueryBuilderGroupBy.cs
//  Developer:	Solomatov Igor
//  Created:	15.04.2012
// 
//  -------------------- iSharePoint -------------------- //

namespace Smart.Common.Entities
{
	/// <summary>
	/// GroupBy group
	/// </summary>
	public interface IQueryBuilderGroupBy<TExecutorType> : IQueryBuilderItem<TExecutorType>
		where TExecutorType : class
	{
		/// <summary>
		/// Set GroupBy options
		/// </summary>
		IQueryBuilderGroupBy<TExecutorType> Set(bool collapse, int groupLimit);

		/// <summary>
		/// Set GroupBy options
		/// </summary>
		IQueryBuilderGroupBy<TExecutorType> Set(int groupLimit);

		/// <summary>
		/// Set GroupBy options
		/// </summary>
		IQueryBuilderGroupBy<TExecutorType> Set(bool collapse);

		/// <summary>
		/// Add group by <paramref name="field"/>
		/// </summary>
		IQueryBuilderGroupBy<TExecutorType> Field(string field);
	}
}